Inter-business application or service integration has long been an important task for corporations in some vertical market segments. In general, services for which information is distributed through a communication network may be referred to as network services. “Web services” are an example of network services, and represent the next generation of technology being used for automatically exchanging information between different applications over the public Internet and many private networks. Web services provide a framework for building web-based distributed applications, and can provide efficient and effective automated machine-to-machine communications.
From a technology point of view, web services are network accessible functions that can be accessed using standard Internet protocols such as HyperText Transfer Protocol (HTTP), extensible Markup Language (XML), Simple Object Access Protocol (SOAP), etc., over standard interfaces.
The real power of web services technology is in its simplicity. The core technology only addresses the common language and communication issues and does not directly address the onerous task of application integration. Web services can be viewed as a sophisticated machine-to-machine Remote Procedure Call (RPC) technology for interconnecting multiple heterogeneous untrusted systems. Web services take the best of many new technologies by utilizing XML technology for data conversion/transparency and Internet standards such as HTTP and Simple Mail Transfer Protocol (SMTP) for message transport.
One of the primary drivers behind the development and standardization of web services is the ability to facilitate seamless machine-to-machine application-level communications by providing a loose coupling between disparate applications. Such a loose coupling of applications allows applications on different servers to interoperate without requiring a static, inflexible interface between them. Applications using very different technologies can interoperate using standard web services protocols.
Currently available web service products, however, may provide limited service and service version management features. For example, existing web service registry products are simple repositories of web services. Any change in such a registry can affect a web service client application, in that the client application may have to be updated in accordance with reported registry changes. Therefore, it is said that these client applications are “tightly-coupled” with a registry that is offering web services.
In addition, some exiting solutions for supporting the publishing of web services simply provide a single centralized registry for announcing the publication of a web service, with no support for a distributed and synchronized set of registries as may be required in a global corporation. Such web service registry products do not support distributed publishing or automatic rollback, for example. An application administrator is obliged to handle each service publishing and rollback operation manually, and is still unable to provide seamless versioning. Any errors in this process can have a significant business impact.
It has been proposed to handle web service versioning by keeping a version current in a Web Services Description Language (WSDL) document that is made available through Universal Description, Discovery and Integration (UDDI). This approach acknowledges that versioning can be a significant problem, and involves both forethought into namespace management and a manual stage of implementing software code at a router intermediary at the same time that a service is published.
Another suggested approach to version management would attempt to enable an application to automatically determine and consume the most recent version of a service by having both client applications and service provider applications support dynamic binding. A dynamic binding implementation, however, can be complex since it requires constant checking for tmodel updates from client applications. This also does not avoid the need for new development at client applications, or include any provisions for service rollback.
U.S. patent application Ser. No. 10/785,780, published on Aug. 26, 2004 as Publication No. 2004/0168153, describes deployment and management of differing versions of software components. Although updates to client applications can be avoided, all service requests received from clients are handled by either a single active version of a service or a version of the service specified in the request.
Thus, there remains a need for improved network service version management techniques.